package com.lanou3g.hw0514.model;

import com.lanou3g.hw0514.pojo.User;
import com.lanou3g.hw0514.util.JDBCUtil;
import com.lanou3g.hw0514.util.MyResultSet;
import com.lanou3g.hw0514.util.MyStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * Created by dllo on 18/4/27.
 */

//专门与数据库进行连接
public class Model {
    //判断数据库中是否有某一个用户名
    //uesrname 要判断的用户名
    //true:数据库中有该用户名;false:数据库中没有该用户
    public boolean hasUsername(String username) {
//        //判断有没有这个用户,其实就是查找
//        //数据库中,有该用户名的数据条数
//        //条数为0没有
//        //>0有
//        //拼接sql语句的时候,不要忘记单引号
//        String sql = "SElECT COUNT(*) FROM `login` WHERE username= ?";
//        PreparedStatement statement = JDBCUtil.getPreStatement(sql);
//        try {
//            statement.setString(1, username);
//            ResultSet rs = statement.executeQuery();
//            rs.next();//移动到第一条数据
//            //数量信息肯定是第一列,所以直接写1
//            Integer count = rs.getInt(1);//传的是第一列
//            if (count > 0) {
//                return true;//表示数据库中有该用户名
//            }
//            rs.close();//关闭资源
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//        return false;
        String sql = "SElECT COUNT(*) FROM `login` WHERE username= ?";
        MyStatement statement = JDBCUtil.getPreStatement(sql);
        statement.setString(1, username);
        //执行完这行语句后,就不会自动的关闭资源
        MyResultSet rs = statement.executeQuery();
        rs.next();//索引移动到第一行
        int count = rs.getInt(1);
        rs.close();
        JDBCUtil.closeResource(statement);
        return count > 0;
    }

//    public static void main(String[] args) {
//        Model model = new Model();
//        boolean hasUsername = model.hasUsername("Aa");
//        System.out.println(hasUsername);
//    }

    //注册
    //username 用户名
    //pwd 密码
    //word 喜欢的一句话
    //true:注册成功;false:注册失败
    public boolean register(String username, String pwd, String word) {
//        String sql = "INSERT INTO `login` (username, pwd, word) VALUES ( ? , ? , ? )";
//        PreparedStatement statement = JDBCUtil.getPreStatement(sql);
//        try {
//            statement.setString(1, username);
//            statement.setString(2, pwd);
//            statement.setString(3, word);
//            int rows = statement.executeUpdate();
//            if (rows > 0) {
//                return true;
//            }
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//        return false;
        String sql = "INSERT INTO `login` (username, pwd, word)" +
                " VALUES ( ? , ? , ? )";
        MyStatement statement = JDBCUtil.getPreStatement(sql);
        statement.setString(1, username);
        statement.setString(2, pwd);
        statement.setString(3, word);
        //不需要结果集的执行,可以实现自动关闭资源

        int rows = statement.executeUpdate();
        return rows > 0;
    }

    /**
     * 登录
     *
     * @param username 用户名
     * @param pwd      密码
     * @return 登陆成功:返回装着用户信息的user对象
     * 登录失败:return null
     */
    public User login(String username, String pwd) {
        //1.查一下 是否有这个用户
        //条件是用户名和密码都匹配上
        String checkLogin = "SELECT * FROM login WHERE" +
                " username = ? AND pwd = ?";//防止sql注入

        PreparedStatement statement = JDBCUtil.getPreStatement(checkLogin);

        try {
            //设置值
            statement.setString(1, username);
            statement.setString(2, pwd);
            ResultSet rs = statement.executeQuery();//执行这个方法
            User user = null;
            if (rs.next()) {
                user = new User();
                String dbUsername = rs.getString("username");
                String dbPwd = rs.getString("pwd");
                String dbWord = rs.getString("word");
                user.setPwd(dbPwd);
                user.setUsername(dbUsername);
                user.setWord(dbWord);
            }
            rs.close();
            JDBCUtil.closeResource(statement);
            return user;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;

    }
    //sql注入
//    public static void main(String[] args) {
//        String username = "aaa' OR 1 = 1 --  ";
//        String pwd = "asdfasfa";
//
//        Model model = new Model();
//        User user = model.login(username, pwd);
//        if (user == null) {
//            System.out.println("用户名/密码错误");
//        } else {
//            System.out.println(user.getWord());
//        }
//    }

}